/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Controllers; import Models.DataOrderBook; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import jxl.Workbook; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableCell; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; /** * * @author GE */ public class ExportChart implements AskListener, BidListener { private static WritableWorkbook outWorkBook = null; private static WritableSheet out = null; private int nrows; private ArrayList<Number> list_data; private double last_bid; private double last_ask; private int i; private final int size = 5000; private boolean bool; public ExportChart() throws WriteException { list_data = new ArrayList<>(); this.i = 0; this.nrows = 1; this.bool = false; } public void setBoolean(boolean bool) { this.bool = bool; } public void reInitialize(){ this.i=0; this.list_data=new ArrayList<>(); } public void addData(int date, double bid, double ask) { String tmp; WritableCell cell; if (nrows == 1) { if (bid == 0) { list_data.add(new Number(0, 1, date)); list_data.add(new Number(1, 1, ask)); list_data.add(new Number(2, 1, ask)); last_bid = ask; last_ask = ask; } else { list_data.add(new Number(0, 1, date)); list_data.add(new Number(1, 1, bid)); list_data.add(new Number(2, 1, bid)); last_bid = bid; last_ask = bid; } } else { if (bid == 0) { list_data.add(new Number(0, nrows, date)); list_data.add(new Number(1, nrows, last_bid)); list_data.add(new Number(2, nrows, ask)); last_ask = ask; } else { list_data.add(new Number(0, nrows, date)); list_data.add(new Number(1, nrows, bid)); list_data.add(new Number(2, nrows, last_ask)); last_bid = bid; } } nrows++; } public void endExport() throws IOException, WriteException { Date mydate = new Date(); try { outWorkBook = Workbook.createWorkbook(new File("TemplateChart-" + mydate.getHours() + "h" + mydate.getMinutes() + ".xls")); out = outWorkBook.createSheet("Data", 0); // Récupération de l'onglet courant (le premier onglet) out = outWorkBook.getSheet(0); Label labelD = new Label(0, 0, "Date"); Label labelB = new Label(1, 0, "Bid"); Label labelA = new Label(2, 0, "Ask"); //Ajout des cellules out.addCell(labelD); out.addCell(labelB); out.addCell(labelA); } catch (IOException ex) { Logger.getLogger(ExportChart.class.getName()).log(Level.SEVERE, null, ex); } this.WriteData(); outWorkBook.write(); outWorkBook.close(); } private void WriteData() throws WriteException { for (Number e : list_data) { out.addCell(e); } } @Override public void handleBestAsk(DataOrderBook data) { if (bool) { if (this.i <= size) { if (this.i == size) { try { this.endExport(); } catch (IOException | WriteException ex) { Logger.getLogger(ExportChart.class.getName()).log(Level.SEVERE, null, ex); } } else { this.addData(data.getTime(), 0, data.getPrice()); } this.i++; } } } @Override public void handleBestBid(DataOrderBook data) { if (bool) { if (this.i <= size) { if (this.i == size) { try { this.endExport(); } catch (IOException | WriteException ex) { Logger.getLogger(ExportChart.class.getName()).log(Level.SEVERE, null, ex); } } else { this.addData(data.getTime(), data.getPrice(), 0); } this.i++; } } } }